home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 9
/
FM Towns Free Software Collection 9.iso
/
t_os
/
tool
/
cw3
/
cw3.bas
next >
Wrap
BASIC Source File
|
1994-11-16
|
28KB
|
853 lines
1000 '## モールスを覚えちゃおう! ##
1010 '## HI-CCC 製作者: 尋燐・ルナ ##
1020 '## V2.04 1993/07/28 ## フリコレ6
1030 '## V2.05 1993/08/30 ## printer・音声出力 対応
1040 '## V3.02 1994/07/07 ## 1級対応
1050 :
1060 DEFSTR A
1070 RANDOMIZE TIME
1080 TEST=0 :'制作用
1090 :
1100 GOSUB *初期化
1110 GOSUB *項目設定
1120 GOSUB *符号セット
1130 GOSUB *スタータ
1140 *やり直し
1150 GOSUB *画面
1160 GOSUB *BACK
1170 GOSUB *入力
1180 GOSUB *WINDO2
1190 GOSUB *実行
1200 GOTO *やり直し
1210 :
1220 *終了
1230 END
1240 :
1250 '----SUB----
1260 *初期化
1270 SCREEN@ 0 :CLS :PALETTE
1280 DIM AK(120) :'見本符号リスト
1290 DIM AL(250) :'解答符号リスト
1300 MAX=0
1310 OTO=700 :'音程
1320 SPEED=12 :'速さ
1330 CLASS=2 :'級
1340 DIM ACLASS(4) :'級名
1350 ACLASS(0)="1級和文" :ACLASS(1)="1級欧文"
1360 ACLASS(2)="2級欧文" :ACLASS(3)="3級欧文"
1370 ACLASS(4)="特殊記号"
1380 ON KEY(10) GOSUB *強制終了
1390 RETURN
1400 :
1410 *項目設定
1420 'ウインド1
1430 W1C=20 :'##ウインド1の最大項目数
1440 DIM AW(W1C) :'##項目名
1450 DIM SW(W1C) :'##設定1
1460 DIM AW1(W1C) :'##設定2
1470 RESTORE *設定DATA :I=0
1480 READ AW(I),SW(I),AW1(I)
1490 IF AW(I)<>"" THEN I=I+1 :GOTO 1480 ELSE W1C=I-1
1500 'ウインド2
1510 DIM AH(W1C+2) :'##HELPメッセージ
1520 RESTORE *HDATA :FOR I=0 TO W1C+2 :READ AH(I) :NEXT
1530 RETURN
1540 :
1550 '--------
1560 *画面
1570 SCREEN@ 0 :CLS :WIDTH 80,20
1580 PALETTE 9,[100,100,120]
1590 PALETTE 10,[180,180,180]
1600 PALETTE 11,[0,0,120]
1610 LINE (0,0)-(639,479),PSET,%9,BF
1620 SYMBOL (30,10),"モールスを覚えちゃおう!",2,1,6,,,15
1630 SYMBOL (150,32),"スペシャル",1,1,%2,,,1,2
1640 SYMBOL (350,30),"V3.02",1,1,5,,,1,2
1650 SYMBOL (450,10),"JG0QKR",1,1,4,,,7
1660 SYMBOL (450,30),"製作者: 尋燐・ルナ",1,1,4,,,1
1670 LINE (35,40)-(435,40),PSET,%11
1680 CONNECT (435,5)-(405,60)-(620,60)-(610,50)-(610,70),%11
1690 GOSUB *WIND1
1700 X0=400 :Y0=105 :X1=600 :Y1=244 :GOSUB *ウインド
1710 COLOR 4 :LOCATE 57,4 :PRINT "メッセージ"
1720 RETURN
1730 :
1740 *ウインド
1750 CONNECT (X0,Y1)-(X0,Y0)-(X1,Y0),%10
1760 CONNECT (X0-1,Y1)-(X0-1,Y0-1)-(X1+1,Y0-1),%10
1770 CONNECT (X0,Y1)-(X1,Y1)-(X1,Y0),0
1780 CONNECT (X0-1,Y1+1)-(X1+1,Y1+1)-(X1+1,Y0-1),0
1790 X0=X0+30 :X1=X0+140 :Y0=Y0-14 :Y1=Y0+24
1800 LINE (X0,Y0)-(X1,Y1),PSET,%9,BF
1810 CONNECT (X0,Y1)-(X0,Y0)-(X1,Y0),%10
1820 CONNECT (X0-1,Y1-12)-(X0-1,Y0+1)-(X1+1,Y0+1),%10
1830 CONNECT (X0,Y1)-(X1,Y1)-(X1,Y0+1),0
1840 CONNECT (X1+1,Y1-12)-(X1+1,Y0+1),0
1850 RETURN
1860 :
1870 *WIND1 :'メイン窓
1880 X0=50 :Y0=82 :X1=350 :Y1=120+25*W1C :GOSUB *ウインド
1890 COLOR 4 :LOCATE 13,3 :PRINT AW(0)
1900 FOR I=1 TO W1C
1910 X0=60 :Y0=93+I*24 :X1=190 :Y1=90+(I+1)*24
1920 CONNECT (X0,Y1)-(X0,Y0)-(X1,Y0),%10
1930 CONNECT (X0,Y1)-(X1,Y1)-(X1,Y0),0
1940 COLOR 6 :LOCATE 9,4+I :PRINT AW(I);
1950 IF SW(I)=-2 THEN LOCATE 27,4+I :PRINT SPEED :GOTO 2000
1960 IF SW(I)=-4 THEN LOCATE 27,4+I :PRINT ACLASS(CLASS) :GOTO 2000
1970 IF SW(I)=-5 THEN LOCATE 31-LEN(STR$(OTO)),4+I :PRINT OTO :GOTO 2000
1980 IF SW(I)<0 THEN LOCATE 27,4+I :PRINT AW1(I);
1990 IF SW(I)>=0 THEN LOCATE 25,4+I :PRINT " する しない"
2000 GOSUB *SW
2010 NEXT
2020 RETURN
2030 :
2040 *SW :'スイッチの窓
2050 IF SW(I)>=0 THEN 2160
2060 IF SW(I)=-3 OR SW(I)>1 THEN RETURN
2070 IX0=205 :IY0=93+I*24 :IY1=90+(I+1)*24
2080 IF SW(I)=-1 THEN IX1=IX0+120
2090 IF SW(I)=-2 THEN IX1=IX0+50
2100 IF SW(I)=-4 THEN IX1=IX0+85
2110 IF SW(I)=-5 THEN IX1=IX0+50
2120 I0=0 :I1=10
2130 CONNECT (IX0,IY1)-(IX0,IY0)-(IX1,IY0),%I0 :CONNECT (IX0,IY1)-(IX1,IY1)-(IX1,IY0),%I1
2140 RETURN
2150 'はい・いいえ の窓
2160 IX0=210 :IX1=274 :IY0=93+I*24 :IY1=90+(I+1)*24
2170 IF SW(I) THEN 2230
2180 CONNECT (IX1,IY1)-(IX1,IY0)-(IX1+60,IY0),0
2190 CONNECT (IX1,IY1)-(IX1+60,IY1)-(IX1+60,IY0),%10
2200 CONNECT (IX0,IY1)-(IX0,IY0)-(IX0+57,IY0),%9
2210 CONNECT (IX0,IY1)-(IX0+57,IY1)-(IX0+57,IY0),%9
2220 RETURN
2230 :CONNECT (IX0,IY1)-(IX0,IY0)-(IX0+57,IY0),0
2240 CONNECT (IX0,IY1)-(IX0+57,IY1)-(IX0+57,IY0),%10
2250 CONNECT (IX1,IY1)-(IX1,IY0)-(IX1+60,IY0),%9
2260 CONNECT (IX1,IY1)-(IX1+60,IY1)-(IX1+60,IY0),%9
2270 RETURN
2280 :
2290 *設定DATA
2300 DATA "各 種 設 定" ,-3,""
2310 DATA "本番モード" , 0,""
2320 DATA "試験難易度" ,-4,""
2330 DATA "スピード" ,-2,""
2340 DATA "・速度テスト" , 0,""
2350 DATA "・ランダム" , 0,""
2360 DATA "・ウエイト" , 0,""
2370 DATA "・5文字暗文" , 0,""
2380 DATA "・解答同時表示" , 0,""
2390 DATA "・モールス同時表示" , 0,""
2400 DATA "・数字付加" , 0,""
2410 DATA "・記号付加" , 0,""
2420 DATA "音程" ,-5,""
2430 DATA "解答を印刷する", 0,""
2440 DATA "音声メッセージ", 0,""
2450 DATA "",0,""
2460 :
2470 *WINDO2 :'サブメニュー
2480 I=0
2490 GOSUB *W2
2500 PRINT " "
2510 A=INPUT$(1)
2520 IF A=CHR$(27) THEN *終了
2530 IF A=CHR$(24) THEN RETURN *やり直し
2540 IF A="*" THEN GOSUB *OMAKE :RETURN *やり直し
2550 IF A="/" THEN GOSUB *見本 :RETURN *やり直し
2560 IF A<>CHR$(13) THEN 2510
2570 RETURN
2580 :
2590 *WIND2
2600 I=NO
2610 GOSUB *W2
2620 PRINT "<'Retキー'で設定終了>"
2630 RETURN
2640 :
2650 *W2
2660 COLOR 7
2670 A=AH(I)+SPACE$(50)
2680 FOR I0=1 TO 5
2690 LOCATE 52,4+I0
2700 PRINT MID$(A,I0*22-21,22)
2710 NEXT
2720 COLOR 5 :LOCATE 51,9
2730 RETURN
2740 :
2750 *HDATA
2760 DATA "Ret・・・・ 試験を開始するESC・・・・ 終了する 取消・・・ 設定をし直す * ・・・・ おまけ / ・・・・モールス見本"
2770 DATA "形式(本番用・練習用)を選んでください。 練習では一通りやるだけです。"
2780 DATA "1・2・3級 和/欧文 対応です。練習モード時の級は意味を成しません。実戦用に記号モードも有り!"
2790 DATA "スピードを←→で選んでください。数字が小さくなるほど速くなります。"
2800 DATA "スピードをチェックします。級を選択後実行します。1分が試験速度。少し速めが良い。"
2810 DATA "A-Z(ア-ン)までランダムに実行するときは'する'を選択。最初は順番で覚えましょう!"
2820 DATA "1文字づつウエイトを掛けるときには'する'を選択。 練習モードの時のみ。"
2830 DATA "ランダム5文字毎にスペースが入る。スペースの感覚も結構だいじです。"
2840 DATA "モールス信号と同時に解答(英語・日本語)も表示する。 練習モードの時のみ。"
2850 DATA "モールス信号と同時に解答(モールス記号)も表示する。 練習モードの時のみ。"
2860 DATA "数字も練習するかどうかの選択です。1/2級では出題されますので練習した方が賢明です。"
2870 DATA "記号も練習するかどうかの選択です。実戦及び1級では練習した方が賢明です。"
2880 DATA "モールスの音程を決めます。650前後が良いと思いますが...."
2890 DATA "解答を印刷します。テープに録音して練習するのに便利かと思います。"
2900 DATA "始めと終わりに音声でのアナウンスが有ります。より実戦的かと。テープ録音の頭出しにも便利!"
2910 DATA ""
2920 :
2930 '-----
2940 *入力
2950 NO=1 :ONO=2
2960 *IN0
2970 IF NO<1 THEN NO=W1C
2980 IF NO>W1C THEN NO=1
2990 GOSUB *WIND2
3000 LOCATE 9,4+ONO :COLOR 6 :PRINT AW(ONO)
3010 LOCATE 9,4+NO :COLOR 5 :PRINT AW(NO)
3020 ONO=NO
3030 *IN1
3040 A=INPUT$(1)
3050 IF A=CHR$(13) THEN RETURN
3060 IF A=CHR$(&H1F) THEN NO=NO+1 :GOTO *IN0
3070 IF A=CHR$(&H1E) THEN NO=NO-1 :GOTO *IN0
3080 IF SW(NO)=-5 THEN *IN6 '##音程
3090 IF SW(NO)=-4 THEN *IN5 '##級
3100 IF SW(NO)=-2 THEN *IN3 '##スピード
3110 IF SW(NO)=-1 THEN *IN4 '##ファイル名
3120 IF SW(NO)>=0 THEN *IN2 '##設定ON-OFF
3130 GOTO *IN0
3140 :
3150 *IN2
3160 IF A<>CHR$(&H1C) AND A<>CHR$(&H1D) THEN *IN1
3170 SW(NO)=-(SW(NO)=0)
3180 IF CLASS=4 THEN SW(4)=0
3190 IF SW(1) THEN SW(4)=0 :SW(5)=1 :SW(6)=0 :SW(8)=0 :SW(9)=0
3200 IF SW(4) THEN SW(5)=0 :SW(6)=0 :SW(7)=0 :SW(8)=0 :SW(9)=0
3210 IF SW(7) THEN SW(5)=1
3220 FOR I=1 TO W1C :GOSUB *SW :NEXT
3230 GOTO *IN1
3240 *IN3
3250 SPEED=SPEED+(A=CHR$(&H1C))-(A=CHR$(&H1D))
3260 IF SPEED<1 THEN SPEED=40
3270 IF SPEED>40 THEN SPEED=1
3280 A0=RIGHT$(" "+STR$(SPEED),3)
3290 AW1(NO)=A0 :COLOR 6 :LOCATE 27,4+NO :PRINT AW1(NO)
3300 GOTO *IN1
3310 *IN4
3320 IF A<>CHR$(13) AND A<>CHR$(&H1C) THEN *IN1
3330 COLOR 7 :LOCATE 27,4+NO
3340 LINE INPUT "",A0
3350 IF A0="" THEN *IN1
3360 COLOR 6 :LOCATE 27,4+NO
3370 IF LEN(A0)>12 THEN A0=LEFT$(A0,12)
3380 AW1(NO)=A0 :PRINT A0+SPACE$(13)
3390 GOTO *IN1
3400 *IN5
3410 CLASS=CLASS-(A=CHR$(&H1C))+(A=CHR$(&H1D))
3420 IF CLASS<0 THEN CLASS=4
3430 IF CLASS>4 THEN CLASS=0
3440 A0=ACLASS(CLASS)
3450 AW1(NO)=A0 :COLOR 6 :LOCATE 27,4+NO :PRINT AW1(NO)
3460 IF CLASS<3 THEN SW(10)=1 ELSE SW(10)=0
3470 IF CLASS=4 THEN SW(1)=0 :SW(4)=0 :SW(11)=1 ELSE SW(11)=0
3480 FOR I=1 TO W1C :GOSUB *SW :NEXT
3490 GOTO *IN1
3500 *IN6
3510 OTO=OTO+(A=CHR$(&H1C))*20-(A=CHR$(&H1D))*20
3520 IF OTO<400 THEN OTO=400
3530 IF OTO>1100 THEN OTO=1100
3540 A0=RIGHT$(" "+STR$(OTO),4)
3550 AW1(NO)=A0 :COLOR 6 :LOCATE 27,4+NO :PRINT AW1(NO)
3560 GOTO *IN1
3570 :
3580 '-----
3590 *BACK
3600 IF TEST THEN 3710
3610 RESTORE 3610
3620 COLOR 5
3630 FOR I=1 TO 9
3640 READ A
3650 SYMBOL (430,240+I*20),A,1,1,4
3660 NEXT
3670 SYMBOL (390,270),"欧",1,1,5,,,7
3680 SYMBOL (390,300),"文",1,1,5,,,7
3690 SYMBOL (390,370),"和",1,1,5,,,7
3700 SYMBOL (390,400),"文",1,1,5,,,7
3710 LINE (580,258)-(600,258),PSET,4
3720 LINE (533,298)-(551,298),PSET,4
3730 LINE (533,357)-(565,357),PSET,4
3740 LINE (533,397)-(563,397),PSET,4
3750 LINE (420,255)-(420,440),PSET,%11
3760 LINE (380,345)-(630,345),PSET,%11
3770 RETURN
3780 DATA "本文始まり : HR HR BT"
3790 DATA " .... .-. .... .-. -...-"
3800 DATA "通信終了 : AR"
3810 DATA ".-.-."
3820 DATA " "
3830 DATA "本文始まり : ホレ"
3840 DATA "-..--- "
3850 DATA "通信終了 : ラタ"
3860 DATA "...-."
3870 :
3880 '-------
3890 *スタータ
3900 IF TEST THEN RETURN
3910 WHILE INKEY$<>"" :WEND
3920 SCREEN@ 2
3930 LOAD@ "QK.TIF"
3940 IF TEST THEN AT="Q" ELSE AT="CQ DE JG0QKR K"
3950 GOSUB *コンバート
3960 SPEED=4
3970 KEY(10) ON
3980 GOSUB *文字OUT1
3990 KEY(10) OFF
4000 IF INKEY$<>"" THEN GOSUB *S2
4010 SPEED=12
4020 SCREEN@ 0
4030 RETURN
4040 :
4050 *S2
4060 A=INPUT$(1) :X=210
4070 LINE (200,100)-(380,355),PSET,7,BF
4080 SYMBOL (X,105),"製作者:JG0QKR",1,1,0,,,1
4090 SYMBOL (X,125),"協力者:JG0QKS",1,1,0,,,1
4100 SYMBOL (X,145)," :JI0FLS",1,1,0,,,1
4110 SYMBOL (X,165),"Design:ゴルゴ小林",1,1,0,,,1
4120 SYMBOL (X,185),"Friend:JG0BVZ",1,1,0,,,1
4130 SYMBOL (X,205)," :JG0PMU",1,1,0,,,1
4140 SYMBOL (X,225)," :JG0TDV",1,1,0,,,1
4150 SYMBOL (X,245),"その他:JG0XBI",1,1,0,,,1
4160 SYMBOL (X,265)," :のりP",1,1,0,,,1
4170 SYMBOL (X,285)," :まーすけ",1,1,0,,,1
4180 SYMBOL (X,310)," 1994/07/07",1,1,0,,,1
4190 SYMBOL (X,330)," by 尋燐・ルナ",1,1,0,,,1
4200 A=INPUT$(1)
4210 FOR X=200 TO -50 STEP -5
4220 LINE (X,X-100)-(580-X,555-X),PSET,7,B
4230 NEXT
4240 RETURN
4250 :
4260 '-----
4270 *実行
4280 CLS
4290 AT=""
4300 IF CLASS<4 THEN AT="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
4310 IF CLASS=0 THEN AT="アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨワヲン゙゚-"
4320 IF SW(11) THEN AT=AT+"+-*/='(),.:・?」"
4330 IF SW(10) THEN AT=AT+"1234567890"
4340 IF SW(4) THEN 4570
4350 IF SW(1)=0 THEN 4530
4360 IF CLASS=0 THEN 4460
4370 '--欧文本番--
4380 ATS="HR HR < " :ATE=" >" :'~BT ~AR
4390 IF CLASS=1 THEN CT=180 :I0=7
4400 IF CLASS=2 THEN CT=90 :I0=4
4410 IF CLASS=3 THEN CT=50 :I0=2
4420 GOSUB *文字列
4430 IF SW(5) THEN GOSUB *混ぜる
4440 AT=LEFT$(AT,CT)
4450 GOTO 4660
4460 '--和文本番--
4470 ATS="{ " :ATE=" }" :'~ホレ ~ラタ
4480 CT=150
4490 GOSUB *文字列
4500 IF SW(5) THEN GOSUB *混ぜる
4510 AT=LEFT$(AT,CT)
4520 GOTO 4660
4530 '--練習--
4540 ATS="" :ATE=""
4550 IF SW(5) THEN GOSUB *混ぜる
4560 GOTO 4660
4570 '--TEST--
4580 IF CLASS=0 THEN CT=50
4590 IF CLASS=1 THEN CT=60
4600 IF CLASS=2 THEN CT=45
4610 IF CLASS=3 THEN CT=25
4620 GOSUB *文字列
4630 GOSUB *TEST
4640 RETURN
4650 :
4660 '--本流--
4670 IF SW(7)=0 THEN 4740 :'5文字
4680 A=AT :I0=LEN(A) :AT=""
4690 FOR I=1 TO I0
4700 IF ((I-1) MOD 5)=0 AND I<>1 THEN AT=AT+" "
4710 AT=AT+MID$(A,I,1)
4720 NEXT
4730 GOTO 4820
4740 : IF SW(1)=0 THEN 4820 :'本番 & not5文字
4750 A=AT :AT="" :I0=0
4760 FOR I=1 TO LEN(A)
4770 IF (INT(RND(1)*5)=3 AND I<>1) OR I0=>10 THEN AT=AT+" " :I0=0
4780 AT=AT+MID$(A,I,1)
4790 I0=I0+1
4800 NEXT
4810 :
4820 ANS=AT
4830 AT=ATS+AT+ATE
4840 :
4850 IF TEST THEN PRINT AT
4860 GOSUB *コンバート
4870 F=0 :KEY(10) ON :'強制終了
4880 COLOR 4 :PRINT "** それでは '";
4890 COLOR 6 :PRINT ACLASS(CLASS);
4900 COLOR 4 :PRINT "' を始めます。 途中'PF KEY10'を押すと中断します。 **"
4910 COLOR 7 :PRINT "・紙と鉛筆の用意は出来ましたか?"
4920 IF SW(1)=0 THEN 4970
4930 COLOR 5 :PRINT "本番と同じ形式です。"
4940 IF CLASS=0 THEN PRINT "始めの ホレ と、終わりの ラタ は書き取る必要がありません。" :GOTO 4960
4950 PRINT "始めの HR HR BT と、終わりの AR は書き取る必要がありません。"
4960 PRINT "終了後、直ちに鉛筆を置いてください。書き直しの時間はありません。"
4970 PRINT :COLOR 7
4980 IF POUT THEN PRINT "音声出力 & プリントアウト します。"
4990 PRINT "何かキーを押して下さい。2秒後に始まります。";
5000 IF SW(6) THEN PRINT "(1文字毎にウエイトが掛かります。)" ELSE PRINT ""
5010 WHILE INKEY$<>"" :WEND
5020 A=INPUT$(1) :PRINT "-Start!!-" :PRINT :WAIT 200
5030 IF SW(14) THEN GOSUB *声1 :WAIT 400
5040 TIME$="00:00:00"
5050 :
5060 IF SW(6) OR SW(8) OR SW(9) THEN GOSUB *文字OUT2 ELSE GOSUB *文字OUT1
5070 :
5080 KEY(10) OFF
5090 PRINT
5100 COLOR 6 :PRINT "- 終了いたしました。-" :COLOR 7
5110 PRINT "時間 = ";RIGHT$(TIME$,4)
5120 IF SW(14) THEN WAIT 200 :GOSUB *声2
5130 A=ANS+"<"+SPACE$(250-LEN(ANS))
5140 PRINT " 0 . 1 . 2 . 3 . 4"
5150 PRINT "解答 = 0|";LEFT$(A,40);"|"
5160 PRINT " 40|";MID$(A, 41,40);"|"
5170 PRINT " 80|";MID$(A, 81,40);"|"
5180 PRINT " 120|";MID$(A,121,40);"|"
5190 PRINT " 160|";MID$(A,161,40);"|"
5200 PRINT " 200|";MID$(A,201,40);"|"
5210 PRINT " 0 . 1 . 2 . 3 . 4"
5220 IF SW(13) THEN GOSUB 5260
5230 WHILE INKEY$<>"" :WEND :A=INPUT$(1)
5240 RETURN
5250 :
5260 '---Printre OUT---
5270 LPRINT " |0 . 1 . 2 . 3 . 4|"
5280 LPRINT " 0| ";LEFT$(A,40) ;"|"
5290 LPRINT " 40| ";MID$(A, 41,40);"|"
5300 LPRINT " 80| ";MID$(A, 81,40);"|"
5310 LPRINT "120| ";MID$(A,121,40);"|"
5320 LPRINT "160| ";MID$(A,161,40);"|"
5330 LPRINT "200| ";MID$(A,201,40);"|"
5340 LPRINT " |0 . 1 . 2 . 3 . 4|"
5350 LPRINT :LPRINT
5360 RETURN
5370 :
5380 '-----
5390 *文字列 '出題の元となるデータ作り AT,CT >AT
5400 A="" :I0=LEN(AT) :I1=CT
5410 IF I1>=I0 THEN A=A+AT :I1=I1-I0 :GOTO 5410
5420 IF I1 THEN A=A+LEFT$(AT,I1)
5430 AT=A
5440 RETURN
5450 :
5460 *TEST
5470 F=0
5480 COLOR 6 :PRINT "** 只今モールス速度のテスト中!! **"
5490 COLOR 5
5500 PRINT "・ ";ACLASS(CLASS);" ";
5510 A=STR$(CT)
5520 PRINT A;"文字/分"
5530 A=" ・ " :FOR I=1 TO 6 :PRINT A;STR$(I); :NEXT :PRINT
5540 COLOR 7 :PRINT AT
5550 GOSUB *コンバート
5560 TIME$="00:00:00"
5570 GOSUB *文字OUT1
5580 COLOR 4 :PRINT "掛かった時間 = ";TIME$
5590 COLOR 7 :PRINT :PRINT ">丁度1分が試験速度です。"
5600 PRINT ">機種によってマシン速度が違うので、各自速度を調整してください。"
5610 PRINT ">最終的には、1分以内の速度で本番用が書き取れれば良いでしょう。"
5620 PRINT :PRINT "何かキーを押すとメニューに戻ります。"
5630 WHILE INKEY$<>"" :WEND :A$=INPUT$(1)
5640 RETURN
5650 :
5660 '-------------
5670 *混ぜる
5680 FOR I0=1 TO 2
5690 FOR I=1 TO LEN(AT)
5700 I0=INT(RND(1)*LEN(AT))+1
5710 A=MID$(AT,I,1) :A1=MID$(AT,I0,1)
5720 MID$(AT,I,1)=A1 :MID$(AT,I0,1)=A
5730 NEXT
5740 NEXT
5750 RETURN
5760 :
5770 '-----------
5780 :
5790 *コンバート
5800 MAX=LEN(AT)
5810 FOR I=1 TO MAX
5820 A=MID$(AT,I,1)
5830 AL(I)=AK(INSTR(ACOM,A))
5840 NEXT
5850 RETURN
5860 :
5870 *文字OUT1 :'ウエイト無し用
5880 FOR I=1 TO MAX
5890 FOR I0=1 TO LEN(AL(I))
5900 A=MID$(AL(I),I0,1)
5910 IF A="." THEN GOSUB *TEN
5920 IF A="-" THEN GOSUB *LNG
5930 IF A=" " THEN GOSUB *区切
5940 GOSUB *MAT
5950 NEXT
5960 GOSUB *SPC
5970 IF F THEN I=MAX
5980 NEXT
5990 RETURN
6000 :
6010 *文字OUT2 :'ウエイト有り
6020 FOR I=1 TO MAX
6030 A=MID$(ANS,I,1)
6040 IF A=" " THEN 6070
6050 IF SW(8) THEN PRINT A;" "; ELSE PRINT "> ";
6060 IF SW(9) THEN PRINT AL(I) ELSE PRINT
6070 FOR I0=1 TO LEN(AL(I))
6080 A=MID$(AL(I),I0,1)
6090 IF A="." THEN GOSUB *TEN
6100 IF A="-" THEN GOSUB *LNG
6110 IF A=" " THEN GOSUB *区切
6120 GOSUB *MAT
6130 NEXT
6140 GOSUB *SPC
6150 IF SW(6) THEN WHILE INKEY$<>"" :WEND :A=INPUT$(1) :WAIT 100
6160 IF F THEN I=MAX
6170 NEXT
6180 RETURN
6190 :
6200 *TEN :' .
6210 BEEP 363523,300,OTO
6220 GOSUB *TIM
6230 BEEP 0
6240 RETURN
6250 :
6260 *LNG :' -
6270 BEEP 363523,300,OTO
6280 GOSUB *TIM
6290 GOSUB *TIM
6300 GOSUB *TIM
6310 BEEP 0
6320 RETURN
6330 :
6340 *KYU :' - -
6350 BEEP 0
6360 GOSUB *TIM
6370 BEEP 0
6380 RETURN
6390 :
6400 *SPC :' 字と字間 必ず1け休符が入るため3-1=2
6410 GOSUB *TIM
6420 *区切 :' 区切り 必ず(*SPC+休符)*2が入るため7-(2+1)*3=1
6430 *MAT :' . と. の間 1
6440 GOSUB *TIM
6450 BEEP 0 :BEEP 0
6460 RETURN
6470 :
6480 *TIM :'スピード調節
6490 WAIT SPEED
6500 RETURN
6510 :
6520 '----------------------
6530 *符号セット
6540 RESTORE 6620
6550 I=1 :ACOM=""
6560 READ AK(I),A
6570 ACOM=ACOM+A
6580 IF AK(I)<>"END" THEN I=I+1 :GOTO 6560
6590 RETURN
6600 :
6610 *M1
6620 DATA ".-" ,"A
6630 DATA "-..." ,"B
6640 DATA "-.-." ,"C
6650 DATA "-.." ,"D
6660 DATA "." ,"E
6670 DATA "..-." ,"F
6680 DATA "--." ,"G
6690 DATA "...." ,"H
6700 DATA ".." ,"I
6710 DATA ".---" ,"J
6720 DATA "-.-" ,"K
6730 DATA ".-.." ,"L
6740 DATA "--" ,"M
6750 DATA "-." ,"N
6760 DATA "---" ,"O
6770 DATA ".--." ,"P
6780 DATA "--.-" ,"Q
6790 DATA ".-." ,"R
6800 DATA "..." ,"S
6810 DATA "-" ,"T
6820 DATA "..-" ,"U
6830 DATA "...-" ,"V
6840 DATA ".--" ,"W
6850 DATA "-..-" ,"X
6860 DATA "-.--" ,"Y
6870 DATA "--.." ,"Z
6880 :
6890 *M2
6900 DATA "--.--" ,"ア
6910 DATA ".-" ,"イ
6920 DATA "..-" ,"ウ
6930 DATA "-.---" ,"エ
6940 DATA ".-..." ,"オ
6950 DATA ".-.." ,"カ
6960 DATA "-.-.." ,"キ
6970 DATA "...-" ,"ク
6980 DATA "-.--" ,"ケ
6990 DATA "----" ,"コ
7000 DATA "-.-.-" ,"サ
7010 DATA "--.-." ,"シ
7020 DATA "---.-" ,"ス
7030 DATA ".---." ,"セ
7040 DATA "---." ,"ソ
7050 DATA "-." ,"タ
7060 DATA "..-." ,"チ
7070 DATA ".--." ,"ツ
7080 DATA ".-.--" ,"テ
7090 DATA "..-.." ,"ト
7100 :
7110 DATA ".-." ,"ナ
7120 DATA "-.-." ,"ニ
7130 DATA "...." ,"ヌ
7140 DATA "--.-" ,"ネ
7150 DATA "..--" ,"ノ
7160 DATA "-..." ,"ハ
7170 DATA "--..-" ,"ヒ
7180 DATA "--.." ,"フ
7190 DATA "." ,"ヘ
7200 DATA "-.." ,"ホ
7210 DATA "-..-" ,"マ
7220 DATA "..-.-" ,"ミ
7230 DATA "-" ,"ム
7240 DATA "-...-" ,"メ
7250 DATA "-..-." ,"モ
7260 DATA ".--" ,"ヤ
7270 DATA "-..--" ,"ユ
7280 DATA "--" ,"ヨ
7290 DATA "..." ,"ラ
7300 DATA "--." ,"リ
7310 DATA "-.--." ,"ル
7320 DATA "---" ,"レ
7330 DATA ".-.-" ,"ロ
7340 DATA "-.-" ,"ワ
7350 DATA ".-..-" ,"イ
7360 DATA ".--.." ,"エ
7370 DATA ".---" ,"ヲ
7380 DATA ".-.-." ,"ン
7390 :
7400 DATA ".." ,"゙"
7410 DATA "..--." ,"゚"
7420 DATA ".--.-" ,"-"
7430 :
7440 DATA "-...-" ,"<" ' ~BT
7450 DATA ".-.-." ,">" ' ~AR
7460 DATA "-..--- " ,"{" ' ~ホレ
7470 DATA "...-." ,"}" ' ~ラタ
7480 DATA " " ," " 'スペース
7490 :
7500 *M3
7510 DATA ".----" ,"1
7520 DATA "..---" ,"2
7530 DATA "...--" ,"3
7540 DATA "....-" ,"4
7550 DATA "....." ,"5
7560 DATA "-...." ,"6
7570 DATA "--..." ,"7
7580 DATA "---.." ,"8
7590 DATA "----." ,"9
7600 DATA "-----" ,"0
7610 :
7620 DATA ".-.-.-" ,"・" '終点
7630 DATA "--..--" ,"." '小読点
7640 DATA "---..." ,":" '重点又は除法の記号
7650 DATA "..--.." ,"?" '?
7660 DATA ".----." ,"," '略符
7670 DATA "-....-" ,"-" '連続/横線/減算
7680 DATA "-.--." ,"("
7690 DATA "-.--.-" ,")"
7700 DATA "-...-" ,"="
7710 DATA "-..-." ,"/"
7720 DATA ".-.-." ,"+"
7730 DATA "-..-" ,"*"
7740 DATA ".-..-." ,"'" '引用符
7750 DATA ".-.-.." ,"」" '段落
7760 :
7770 DATA "END" ,"" '設定終了
7780 :
7790 '--------------
7800 *声1
7810 DIM PL(20000)
7820 LOAD@ "HAJI.SND",PL
7830 PCMPLAY PL,64
7840 ERASE PL
7850 RETURN
7860 :
7870 *声2
7880 DIM PL(20000)
7890 LOAD@ "ENPI.SND",PL
7900 PCMPLAY PL,64
7910 ERASE PL
7920 RETURN
7930 :
7940 '--------
7950 *メッセージ
7960 BEEP
7970 RESTORE 7970 :COLOR 5
7980 FOR I=1 TO 8 :READ A :LOCATE 44,I+8 :PRINT A :NEXT
7990 A=INPUT$(1)
8000 RETURN
8010 :
8020 DATA "* フレンド局へのメッセージ *"
8030 DATA "マー君 お誕生、おめでとう!
8040 DATA "FBな人生を送って下さい。"
8050 DATA "のりP/てるりん お元気?"
8060 DATA "JG0QKS /BVZ /ゴルゴ小林君"
8070 DATA "2mの女王 PMU局"
8080 DATA "今後とも宜しく!
8090 DATA "こちらはJG0QKR 尋燐・ルナ"
8100 :
8110 '--------
8120 *強制終了
8130 KEY(10) OFF
8140 BEEP 0 :F=1
8150 RETURN
8160 :
8170 '-------------------------------------------------------
8180 *見本
8190 CLS :WIDTH 80,25 :COLOR 6
8200 PRINT "** モールス 見本 ** 1/欧文 2/和文 3/記号"
8210 A=INPUT$(1) :COLOR 7
8220 IF A="1" THEN RESTORE *M1 :CT=26 :GOTO 8260
8230 IF A="2" THEN RESTORE *M2 :CT=51 :GOTO 8260
8240 IF A="3" THEN RESTORE *M3 :CT=24 :GOTO 8260
8250 RETURN
8260 I0=0 :I1=2
8270 FOR I=1 TO CT
8280 READ A,A0
8290 LOCATE I0,I1 :PRINT USING "&& & & | ";A0;A
8300 I1=I1+1 :IF I1>20 THEN I0=I0+20 :I1=2
8310 NEXT
8320 A=INPUT$(1)
8330 GOTO *見本
8340 :
8350 '----------------------------------------------------------
8360 *OMAKE
8370 CLS :COLOR 4
8380 PRINT "## おまけ コーナー by 尋燐・ルナ ##"
8390 PRINT "## 1994/07/07 V3.02 ##"
8400 COLOR 7 :PRINT
8410 PRINT "1..全くモールスを知らない人へ"
8420 PRINT "2..パソコン上と試験場での違い"
8430 PRINT "3..練習していく手順"
8440 PRINT "4..謝辞"
8450 PRINT "0..戻る"
8460 PRINT
8470 PRINT ">貴方はどれかを選ばなければならない!"
8480 PRINT ">さあ!どれにするかな?"
8490 A=INPUT$(1) :I=VAL(A)
8500 IF I=0 THEN RETURN
8510 IF I>4 THEN BEEP 363523,50,800 :COLOR 3 :PRINT ">ま、真面目にやりなさい! いや。やってください。" :WAIT 300 :GOTO *OMAKE
8520 :
8530 ON I GOSUB *MENU1,*MENU2,*MENU3,*MENU4
8540 GOTO *OMAKE
8550 :
8560 *MENU1
8570 RESTORE 8570 :GOTO *表示
8580 DATA 4,"1..全くモールスを知らない人へ(3級)"
8590 DATA 7,""
8600 DATA 7,"・試験には数字や記号は出ませんので(多分:出たらごめん!)"
8610 DATA 7," とにかく先ず英語A-Zを覚えます。"
8620 DATA 7,"・最初は簡単な物 :SOS = ... --- ... トトト ツーツーツー トトト"
8630 DATA 7," :ET = . - ト ツー"
8640 DATA 7," :HI = .... .. トトトト トト"
8650 DATA 7,"・イメージによる :Q = --.- Y = -.-- X = -..-"
8660 DATA 7," :Z = --.."
8670 DATA 7," [文字では書きにくいが . を下げてあるのでイメージでは理解し易いと思う]"
8680 DATA 7,"・反対 :K = -.- R = .-."
8690 DATA 7," :A = .- N = -."
8700 DATA 7,"・似た物 :U = ..- V = ...-"
8710 DATA 7,""
8720 DATA 7," 等各自色々とやってみて下さい。"
8730 DATA 7," .を -より下に打って有るので結構覚えやすいと思います。"
8740 DATA 7," 曖昧でもいいので5割位紙面上で覚えたら、このソフトを使って見てください。"
8750 DATA 7,""
8760 DATA 0,""
8770 :
8780 *MENU2
8790 RESTORE 8790 :GOTO *表示
8800 DATA 4,"2..パソコン上と試験場での違い"
8810 DATA 7,""
8820 DATA 7,"・会場ではかなり音が反響してしまいます。(貴方が思っているより)"
8830 DATA 7," 最悪音が二重に聞こえる場所も在ります。"
8840 DATA 7," 早く会場に行き、なるべく前の方に座るようにしましょう!"
8850 DATA 7,"・最初にA-Z迄1回鳴らしますのでその間に雰囲気を掴みます。"
8860 DATA 7,"・終了後すぐペンを置くように言われます。書き直す時間は有りません。"
8870 DATA 7,"・間違えは3点減点。減点は10点迄です。"
8880 DATA 7," 分からない/怪しい/ついていけない と思ったらすぐその字は抜かしましょう。"
8890 DATA 7," 1点減点のみですみます。"
8900 DATA 7,"・細かい事ですが音を正面で聞くか、右又は左で聞くかで怪しい文字の認識度が"
8910 DATA 7," 違います。少しでも確実にしたいなら利き耳も考慮した方がいいかも。"
8920 DATA 7,"・練習の仕上げにバソコンから離れた所で書き取ることをしとくと良いでしょう!"
8930 DATA 7,"" ,7,""
8940 DATA 5," 頑張って下さい。 by 尋燐・ルナ"
8950 DATA 0,""
8960 :
8970 *MENU3
8980 RESTORE 8980 :GOTO *表示
8990 DATA 4,"3..練習していく手順
9000 DATA 7,""
9010 DATA 7,"・先ずA-Zを5割位とにかく覚えます。紙に書いたりして。"
9020 DATA 7," 私流のイメージ、単純な文字のみで5割はいくでしょう。"
9030 DATA 7,"・A-Zを順番にスロースピードorウエイトで(字、符号を表示しながら)"
9040 DATA 7,"・7割位覚えたらランダムにしてみます。"
9050 DATA 7,"・全部覚えたらもう字を表示させません。ウエイトは掛けてもよい。"
9060 DATA 7,"・慣れてきたらいよいよ書き取りします。ウエイトは外す。"
9070 DATA 7,"・後はスピードを上げたり本番用にしたりいろいろやってみましょう"
9080 DATA 7,"・3級では数字は出ない筈ですが、2級では必ずではないが出題されます。"
9090 DATA 7," 泣く人が多いので勉強しておいてください。"
9100 DATA 7,"・記号は1級で出るかもしれません。しかし殆ど実戦用に作った物です。"
9110 DATA 7,"・仕上げはかなり離れた所にて書き取りします。"
9120 DATA 7,"" ,7,""
9130 DATA 6," 実際はかなり速いスピードでQSOしているのです。"
9140 DATA 6," 例え1級のスピードでもかなり遅いのですよ。
9150 DATA 7,""
9160 DATA 5," 頑張って下さい。 by 尋燐・ルナ"
9170 DATA 0,""
9180 :
9190 *MENU4
9200 RESTORE 9200 :GOTO *表示
9210 DATA 4,"4..謝辞
9220 DATA 7,""
9230 DATA 6," 是を作るにあたり協力してくれた方々に"
9240 DATA 6," この場を借りて御礼申し上げます。"
9250 DATA 7,"
9260 DATA 7," JG0QKS JG0PMU JF0KQF"
9270 DATA 7," JG0PMU JG0TDV"
9280 DATA 7," "
9290 DATA 7," JG0XBI JI0FLS"
9300 DATA 7," "
9310 DATA 7," のりP マースケ"
9320 DATA 7," "
9330 DATA 7," そして"
9340 DATA 7," ゴルゴ・小林 様
9350 DATA 7," "
9360 DATA 6," いろいろと有り難うございました。"
9370 DATA 6," JG0QKR 尋燐・ルナ"
9380 DATA 0,""
9390 :
9400 *表示
9410 CLS
9420 READ I,A
9430 WHILE I>0
9440 COLOR I
9450 PRINT A
9460 READ I,A
9470 WEND
9480 A=INPUT$(1)
9490 RETURN
9500 :
9510 '--------------- E N D ---------------------